WebRTCã®æ¥ç¶å質ã¢ãã¿ãªã³ã°ããã¹ã¿ãŒããŸããããäž»èŠãªçµ±èšãããŒã«ãæè¡ãåŠã³ãäžçäžã®ãŠãŒã¶ãŒã«æé©ãªãªã¢ã«ã¿ã€ã éä¿¡ãä¿èšŒããŸãã
WebRTCçµ±èšïŒæ¥ç¶å質ã¢ãã¿ãªã³ã°ã®ããã®å æ¬çã¬ã€ã
Web Real-Time Communication (WebRTC)ã¯ããŠã§ããã©ãŠã¶ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³å ã§çŽæ¥ããªã¢ã«ã¿ã€ã ã®é³å£°ãæ åãããŒã¿å ±æãå¯èœã«ããç§ãã¡ã®ã³ãã¥ãã±ãŒã·ã§ã³æ¹æ³ã«é©åœããããããŸããããããªäŒè°ããªã³ã©ã€ã³ã²ãŒã ãããé éå»çãå ±åäœæ¥ã¹ããŒã¹ãŸã§ãWebRTCã¯äžçäžã®äœçŸäžäººãã®äººã ãå©çšããæ°ãåããªãã»ã©ã®ã¢ããªã±ãŒã·ã§ã³ãæ¯ããŠããŸããããããã©ã®ãããªWebRTCã¢ããªã±ãŒã·ã§ã³ã®æåããé«åè³ªãªæ¥ç¶ãç¶æããããšã«ããã£ãŠããŸãããã®ã¬ã€ãã§ã¯ãWebRTCçµ±èšã®å æ¬çãªæŠèŠãšããããã䜿çšããŠæ¥ç¶å質ã广çã«ç£èŠã»æé©åããäžçäžã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ãªäœéšãä¿èšŒããæ¹æ³ã«ã€ããŠèª¬æããŸãã
æ¥ç¶å質ã®éèŠæ§ãçè§£ãã
æ¥ç¶åè³ªãæªããšãWebRTCã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æ·±å»ãªåœ±é¿ãäžããå¯èœæ§ããããŸããéåããæ åãä¹±ããé³å£°ãåæãããé話ãšãã£ãåé¡ã¯ããã©ã¹ãã¬ãŒã·ã§ã³ãåŒãèµ·ããããšã³ã²ãŒãžã¡ã³ããäœäžãããåå ãšãªããŸããæ¥ç¶å質ã®ã¢ãã¿ãªã³ã°ã¯ã以äžã®ç®çã§éåžžã«éèŠã§ãïŒ
- åé¡ã®ç¹å®ãšèšºæïŒ ãªã¢ã«ã¿ã€ã ã¢ãã¿ãªã³ã°ã«ããããããã¯ãŒã¯ã®æ··éãããã€ã¹ã®å¶éããµãŒããŒã®åé¡ãªã©ãæ¥ç¶åé¡ã®æ ¹æ¬åå ãç¹å®ã§ããŸãã
- ããã¢ã¯ãã£ããªåé¡è§£æ±ºïŒ æœåšçãªåé¡ãæ©æã«æ€åºããããšã§ããŠãŒã¶ãŒã«åœ±é¿ãåã¶åã«å¯Ÿçãè¬ããããšãã§ããŸãã
- ãããã¯ãŒã¯ã€ã³ãã©ã®æé©åïŒ ã¢ãã¿ãªã³ã°ããŒã¿ã¯ããããã¯ãŒã¯ã€ã³ãã©ã®æ¹åãå¿ èŠãªé åãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- ãŠãŒã¶ãŒæºè¶³åºŠã®åäžïŒ ä¿¡é Œæ§ãé«ãé«å質ãªäœéšãæäŸããããšã§ããŠãŒã¶ãŒã®æºè¶³åºŠãšå®ççãåäžãããããšãã§ããŸãã
- SLAã®éµå®ïŒ ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã®å Žåãã¢ãã¿ãªã³ã°ã¯é話å質ã皌åæéã«é¢ãããµãŒãã¹ã¬ãã«å¥çŽïŒSLAïŒãæºããããšãä¿èšŒããã®ã«åœ¹ç«ã¡ãŸãã
æ¥ç¶å質ã¢ãã¿ãªã³ã°ã®ããã®äž»èŠãªWebRTCçµ±èš
WebRTCã¯ãæ¥ç¶å質ãè©äŸ¡ããããã«äœ¿çšã§ããè±å¯ãªçµ±èšæ
å ±ãæäŸããŸãããããã®çµ±èšã¯éåžžãJavaScriptã®getStats() APIãéããŠã¢ã¯ã»ã¹ãããŸãã以äžã«ãã¢ãã¿ãªã³ã°ãã¹ãæãéèŠãªçµ±èšã®å
èš³ã瀺ããŸãïŒ
1. ãã±ãããã¹
å®çŸ©ïŒ ãã±ãããã¹ãšã¯ãéä¿¡è ãšåä¿¡è ã®éã§è»¢éäžã«å€±ãããããŒã¿ãã±ããã®å²åãæããŸããé«ããã±ãããã¹ã¯ãé³å£°ãæ åã®æªã¿ãé話ã®åæãåŒãèµ·ããå¯èœæ§ããããŸãã
ã¡ããªã¯ã¹ïŒ
packetsLost(éä¿¡åŽããã³åä¿¡åŽ): 倱ããããã±ããã®ç·æ°ãpacketsSent(éä¿¡åŽ): éä¿¡ããããã±ããã®ç·æ°ãpacketsReceived(åä¿¡åŽ): åä¿¡ãããã±ããã®ç·æ°ã- ãã±ãããã¹çã®èšç®:
(packetsLost / (packetsSent + packetsLost)) * 100(éä¿¡åŽ) ãŸãã¯(packetsLost / (packetsReceived + packetsLost)) * 100(åä¿¡åŽ)
ãããå€ïŒ
- 0-1%: éåžžã«è¯ã
- 1-3%: è¯ã
- 3-5%: æ®é
- 5%以äž: æªã
äŸïŒ æ±äº¬ã®ãããªäŒè°ã¢ããªã±ãŒã·ã§ã³ã§6%ã®ãã±ãããã¹çãçºçãããã¯æ¥ç¶ç¶æ ãæªãããšã瀺ãããŠãŒã¶ãŒã«ãšã£ãŠæ åã®éåããé³å£°ã®äžæã«ã€ãªãããŸãã
2. ãžãã¿ãŒ
å®çŸ©ïŒ ãžãã¿ãŒãšã¯ããã±ããéã®é å»¶ã®ã°ãã€ãã®ããšã§ããé«ããžãã¿ãŒã¯ãé³å£°ãæ åãæªãã ããåæãããããããåå ãšãªããŸãã
ã¡ããªã¯ã¹ïŒ
jitter(åä¿¡åŽ): ç§åäœã§æšå®ããããžãã¿ãŒã
ãããå€ïŒ
- 0-30ms: éåžžã«è¯ã
- 30-50ms: è¯ã
- 50-100ms: æ®é
- 100ms以äž: æªã
äŸïŒ ã·ãããŒã®ãã¬ã€ã€ãŒåããªã³ã©ã€ã³ã²ãŒã ãã©ãããã©ãŒã ã§120msã®ãžãã¿ãŒãå ±åãããŸããããã®é«ããžãã¿ãŒã¯é¡èãªã©ã°ãåŒãèµ·ããããŠãŒã¶ãŒã«ãšã£ãŠã²ãŒã ããã¬ã€äžå¯èœãªç¶æ ã«ãªããŸãã
3. é å»¶ (ã©ãŠã³ãããªããã¿ã€ã - RTT)
å®çŸ©ïŒ é å»¶ã¯ãã©ãŠã³ãããªããã¿ã€ã ïŒRTTïŒãšãåŒã°ããããŒã¿ãã±ãããéä¿¡è ããåä¿¡è ã«å°éããæ»ã£ãŠãããŸã§ã«ãããæéã§ããé«ãé å»¶ã¯ã³ãã¥ãã±ãŒã·ã§ã³ã«é ããçãããããªã¢ã«ã¿ã€ã ã®ããåããäžèªç¶ã«æããããåå ãšãªããŸãã
ã¡ããªã¯ã¹ïŒ
currentRoundTripTime(éä¿¡åŽããã³åä¿¡åŽ): ç§åäœã®çŸåšã®ã©ãŠã³ãããªããã¿ã€ã ãaverageRoundTripTime(èšç®å€): ããæéã«ãããå¹³åRTTã
ãããå€ïŒ
- 0-150ms: éåžžã«è¯ã
- 150-300ms: è¯ã
- 300-500ms: æ®é
- 500ms以äž: æªã
äŸïŒ ããé éæè¡ã¢ããªã±ãŒã·ã§ã³ã§ãå·åå»ãšæ£è ã®éã®RTTã600msã«ãªããŸããããã®é«ãé å»¶ã«ããã粟å¯ãªå¶åŸ¡ãå°é£ã«ãªããæ£è ã®å®å šãè ããå¯èœæ§ããããŸãã
4. 垯åå¹
å®çŸ©ïŒ 垯åå¹ ãšã¯ãäžå®æéå ã«æ¥ç¶ãä»ããŠéä¿¡ã§ããããŒã¿éã®ããšã§ããäžååãªåž¯åå¹ ã¯ãç¹ã«é«è§£å床ã®ã³ã³ãã³ããéä¿¡ããå Žåã«ãé³å£°ãæ åã®å質äœäžã«ã€ãªããå¯èœæ§ããããŸãã
ã¡ããªã¯ã¹ïŒ
bytesSent(éä¿¡åŽ): éä¿¡ãããç·ãã€ãæ°ãbytesReceived(åä¿¡åŽ): åä¿¡ããç·ãã€ãæ°ã- é信垯åå¹
ã®èšç®:
bytesSent / timeInterval - å信垯åå¹
ã®èšç®:
bytesReceived / timeInterval availableOutgoingBitrate(éä¿¡åŽ): å©çšå¯èœãªæšå®éä¿¡ãããã¬ãŒããavailableIncomingBitrate(åä¿¡åŽ): å©çšå¯èœãªæšå®åä¿¡ãããã¬ãŒãã
ãããå€ïŒ ã¢ããªã±ãŒã·ã§ã³ãšäœ¿çšãããã³ãŒããã¯ã«äŸåããŸãã
- ãããªäŒè°ã®æå°åž¯åå¹ : 512 kbps (ã¢ããããŒãããã³ããŠã³ããŒã)
- HDãããªäŒè°ã®æšå¥šåž¯åå¹ : 1.5 Mbps (ã¢ããããŒãããã³ããŠã³ããŒã)
äŸïŒ ãã³ã¬ããŒã«ã®ããŒã ããããªäŒè°ããŒã«ã䜿çšããŠããŸããå©çšå¯èœãªåž¯åå¹ ãããã300 kbpsã§ãããããäœè§£ååºŠã®æ åãšé »ç¹ãªãããã¡ãªã³ã°ã®åé¡ãçºçããŠããŸãã
5. ã³ãŒããã¯
å®çŸ©ïŒ ã³ãŒããã¯ïŒcoder-decoderïŒã¯ãé³å£°ããã³æ åããŒã¿ãå§çž®ã»äŒžåŒµããã¢ã«ãŽãªãºã ã§ããã³ãŒããã¯ã®éžæã¯ãWebRTCæ¥ç¶ã®å質ãšåž¯åå¹ èŠä»¶ã«å€§ãã圱é¿ããŸãã
ã¡ããªã¯ã¹ïŒ
codecId(éä¿¡åŽããã³åä¿¡åŽ): 䜿çšãããŠããã³ãŒããã¯ã®IDãmimeType(éä¿¡åŽããã³åä¿¡åŽ): ã³ãŒããã¯ã®MIMEã¿ã€ã (äŸ: audio/opus, video/VP8)ãclockRate(éä¿¡åŽããã³åä¿¡åŽ): ã³ãŒããã¯ã®ã¯ããã¯ã¬ãŒãã
èæ ®äºé ïŒ
- Opus: äœãããã¬ãŒãã§åªããå質ãæäŸãã人æ°ã®é³å£°ã³ãŒããã¯ã
- VP8/VP9: WebRTCã§ãµããŒããããŠããäžè¬çãªæ åã³ãŒããã¯ã
- H.264: åºããµããŒããããŠããæ åã³ãŒããã¯ã§ãããã©ã€ã»ã³ã¹ãå¿ èŠãªå ŽåããããŸãã
äŸïŒ ãã«ãªã³ã®ããäŒæ¥ãããããªäŒè°ã¢ããªã±ãŒã·ã§ã³ãH.264ããVP9ã«åãæ¿ããŸãããããã«ãããæ åå質ãå€§å¹ ã«æãªãããšãªã垯åå¹ æ¶è²»ãåæžãã垯åå¹ ãéãããŠãããŠãŒã¶ãŒã®äœéšãåäžãããŸããã
6. ICEæ¥ç¶ç¶æ
å®çŸ©ïŒ ICE (Interactive Connectivity Establishment) ã¯ããã¢éã§ããŒã¿ãæµããæé©ãªçµè·¯ãèŠã€ããããšã«ãã£ãŠWebRTCæ¥ç¶ã確ç«ããããã«äœ¿çšããããã¬ãŒã ã¯ãŒã¯ã§ããICEæ¥ç¶ç¶æ ã¯ãæ¥ç¶ããã»ã¹ã®çŸåšã®ã¹ããŒã¿ã¹ã瀺ããŸãã
ç¶æ ïŒ
new: ICEãšãŒãžã§ã³ãã¯äœæãããŸããããåè£ã®åéãéå§ããŠããŸãããchecking: ICEãšãŒãžã§ã³ããåè£ãåéäžã§ãæ¥ç¶ã確ç«ããããšããŠããŸããconnected: æ¥ç¶ã¯ç¢ºç«ãããŸããããããŒã¿ã¯ãŸã æµããŠããªãå¯èœæ§ããããŸããcompleted: æ¥ç¶ãæ£åžžã«ç¢ºç«ãããããŒã¿ãæµããŠããŸããfailed: ICEãšãŒãžã§ã³ããæ¥ç¶ã確ç«ã§ããŸããã§ãããdisconnected: æ¥ç¶ã¯å€±ãããŸããããICEãšãŒãžã§ã³ãã¯ãŸã ã¢ã¯ãã£ãã§ããclosed: ICEãšãŒãžã§ã³ããã·ã£ããããŠã³ãããŸããã
ã¢ãã¿ãªã³ã°ïŒ ICEæ¥ç¶ç¶æ
ã远跡ããŠãæœåšçãªæ¥ç¶æ§ã®åé¡ãç¹å®ããŸããfailedãdisconnectedãžã®é »ç¹ãªç§»è¡ã¯ããããã¯ãŒã¯èšå®ããã¡ã€ã¢ãŠã©ãŒã«èšå®ã®åé¡ã瀺ããŠããŸãã
äŸïŒ äžåœã®ãŠãŒã¶ãŒãWebRTCã¢ããªã±ãŒã·ã§ã³ã§é »ç¹ãªæ¥ç¶å€±æãçµéšããŠããŸããICEæ¥ç¶ç¶æ
ãç£èŠãããšãæ¥ç¶ãcheckingãã§ãŒãºã§é »ç¹ã«å€±æããŠããããšãæããã«ãªãããã¡ã€ã¢ãŠã©ãŒã«ã®ãã©ããŒãµã«ãããŒãã®ãããã¯ã«é¢ããåé¡ã瀺åãããŸãã
7. ã·ã°ããªã³ã°ç¶æ
å®çŸ©ïŒ ã·ã°ããªã³ã°ãšã¯ãæ¥ç¶ã確ç«ããããã«WebRTCãã¢éã§ã¡ã¿ããŒã¿ã亀æããããã»ã¹ã§ããã·ã°ããªã³ã°ç¶æ ã¯ãã·ã°ããªã³ã°ããã»ã¹ã®çŸåšã®ã¹ããŒã¿ã¹ã瀺ããŸãã
ç¶æ ïŒ
stable: ã·ã°ããªã³ã°ãã£ãã«ã確ç«ãããŠããã倿Žã®äº€æžã¯è¡ãããŠããŸãããhave-local-offer: ããŒã«ã«ãã¢ããªãã¡ãŒãäœæããŸããããã¢ã³ãµãŒãåä¿¡ããŠããŸãããhave-remote-offer: ããŒã«ã«ãã¢ããªãã¡ãŒãåä¿¡ããŸããããã¢ã³ãµãŒãäœæããŠããŸãããhave-local-pranswer: ããŒã«ã«ãã¢ãæ«å®çãªã¢ã³ãµãŒïŒpranswerïŒãäœæããŸãããhave-remote-pranswer: ããŒã«ã«ãã¢ãæ«å®çãªã¢ã³ãµãŒïŒpranswerïŒãåä¿¡ããŸãããclosed: ã·ã°ããªã³ã°ãã£ãã«ãéããããŸããã
ã¢ãã¿ãªã³ã°ïŒ ã·ã°ããªã³ã°ç¶æ ã远跡ããŠãã·ã°ããªã³ã°ãµãŒããŒãSDPïŒSession Description ProtocolïŒã¡ãã»ãŒãžã®äº€æã«é¢ããåé¡ãç¹å®ããŸããäºæããªãç¶æ é·ç§»ãã·ã°ããªã³ã°ã®é·ãé å»¶ã¯ãæ¥ç¶ç¢ºç«ããã»ã¹ã®åé¡ã瀺ããŠããå¯èœæ§ããããŸãã
äŸïŒ ãã·ã¢ã®ãŠãŒã¶ãŒãWebRTCã¢ããªã±ãŒã·ã§ã³ãžã®æ¥ç¶ã«é
å»¶ãçµéšããŠããŸããã·ã°ããªã³ã°ç¶æ
ãç£èŠãããšãã¢ããªã±ãŒã·ã§ã³ãhave-local-offerããstableãžã®ç§»è¡ã«æéãããã£ãŠããããšãæããã«ãªããSDPã¡ãã»ãŒãžã®äº€æã«é
å»¶ãããããšã瀺åãããŸãã
8. é³å£°ã»æ åã¬ãã«
å®çŸ©ïŒ é³å£°ããã³æ åã¬ãã«ã¯ãéä¿¡ãããŠããé³å£°ã®é³éãšæ åã®æããã瀺ããŸãããããã®ã¬ãã«ãç£èŠããããšã§ããã€ã¯ãã«ã¡ã©ã®èšå®ã«é¢ããåé¡ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
ã¡ããªã¯ã¹ïŒ
audioLevel(éä¿¡åŽããã³åä¿¡åŽ): é³å£°ã¬ãã«ãéåžž0ãã1ã®éã®å€ãvideoLevel(éä¿¡åŽããã³åä¿¡åŽ): æ åã¬ãã«ãéåžž0ãã1ã®éã®å€ã
ã¢ãã¿ãªã³ã°ïŒ é³å£°ã¬ãã«ãäœãå Žåã¯ããã€ã¯ããã¥ãŒããããŠããããæ£ããèšå®ãããŠããªãå¯èœæ§ããããŸããæ åã¬ãã«ãäœãå Žåã¯ãã«ã¡ã©ã®é²åºãé©åã§ãªãããäœãã«é®ãããŠããå¯èœæ§ããããŸãã
äŸïŒ ãã©ãžã«ã§ã®ãªã¢ãŒãäŒè°äžãäœäººãã®åå è ãç¹å®ã®ãŠãŒã¶ãŒã®å£°ãèãããªããšäžæºãèšã£ãŠããŸãããã®ãŠãŒã¶ãŒã®é³å£°ã¬ãã«ãç£èŠãããšãé³å£°ã¬ãã«ãäžè²«ããŠäœãããšã倿ãããã€ã¯ã«åé¡ãããããšã瀺åãããŸãã
WebRTCçµ±èšã®åéãšåæã®ããã®ããŒã«ãšæè¡
WebRTCçµ±èšã®åéãšåæã¯è€éãªäœæ¥ã«ãªãããšããããŸãã幞ããªããšã«ããã®ããã»ã¹ãç°¡çŽ åããããã«ããã€ãã®ããŒã«ãšæè¡ãå©çšå¯èœã§ãïŒ
1. WebRTC Internals
説æïŒ WebRTC Internalsã¯ãChromeããã³ãã®ä»ã®ChromiumããŒã¹ã®ãã©ãŠã¶ã«çµã¿èŸŒãŸããŠããããŒã«ã§ãWebRTCæ¥ç¶ã«é¢ããè©³çŽ°ãªæ å ±ãæäŸããŸãããªã¢ã«ã¿ã€ã ã§çµ±èšæ å ±ã衚瀺ããããICEåè£ã®äº€æãæ€æ»ããããã·ã°ããªã³ã°ã¡ãã»ãŒãžãåæãããããããšãã§ããŸãã
äœ¿çšæ¹æ³ïŒ
- ChromeãéããŸãã
- ã¢ãã¬ã¹ããŒã«
chrome://webrtc-internalsãšå ¥åããEnterããŒãæŒããŸãã - WebRTCã»ãã·ã§ã³ãéå§ããŸãã
- ããŒã«ã䜿çšããŠçµ±èšãæ€æ»ããåé¡ããããã°ããŸãã
2. ãµãŒãããŒãã£è£œã¢ãã¿ãªã³ã°ããŒã«
説æïŒ WebRTCçµ±èšã®åéãåæãå¯èŠåã®ããã®é«åºŠãªæ©èœãæäŸãããµãŒãããŒãã£è£œã®ã¢ãã¿ãªã³ã°ããŒã«ãããã€ããããŸãããããã®ããŒã«ã¯ããã°ãã°æ¬¡ã®ãããªæ©èœãæäŸããŸãïŒ
- ãªã¢ã«ã¿ã€ã ããã·ã¥ããŒã
- å±¥æŽããŒã¿åæ
- ã¢ã©ãŒããšéç¥
- ä»ã®ç£èŠã·ã¹ãã ãšã®çµ±å
äŸïŒ
- TestRTC: å æ¬çãªWebRTCãã¹ãããã³ã¢ãã¿ãªã³ã°ãã©ãããã©ãŒã ã
- Callstats.io: WebRTCã¢ããªã±ãŒã·ã§ã³åãã®ãªã¢ã«ã¿ã€ã ã¢ãã¿ãªã³ã°ãšåæãæäŸãããµãŒãã¹ã
- Symphony: WebRTCã¢ãã¿ãªã³ã°ããã³åæãœãªã¥ãŒã·ã§ã³ãæäŸã
3. ã«ã¹ã¿ã ã¢ãã¿ãªã³ã°ãœãªã¥ãŒã·ã§ã³
説æïŒ ããé«åºŠãªãŠãŒã¶ãŒåãã«ãWebRTCã®getStats() APIãšããã¯ãšã³ãã®ããŒã¿ããŒã¹ãå¯èŠåããŒã«ã䜿çšããŠãã«ã¹ã¿ã ã®ã¢ãã¿ãªã³ã°ãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããããšãå¯èœã§ãã
æé ïŒ
- JavaScriptã§
getStats()APIã䜿çšããŠWebRTCçµ±èšãåéããŸãã - çµ±èšæ å ±ãããã¯ãšã³ããµãŒããŒã«éä¿¡ããŸãã
- ããŒã¿ããŒã¹ïŒäŸïŒMongoDB, PostgreSQLïŒã«çµ±èšæ å ±ãä¿åããŸãã
- å¯èŠåããŒã«ïŒäŸïŒGrafana, KibanaïŒã䜿çšããŠããã·ã¥ããŒããã¬ããŒããäœæããŸãã
WebRTCæ¥ç¶å質ãæé©åããããã®ãã¹ããã©ã¯ãã£ã¹
WebRTCçµ±èšãç£èŠããã·ã¹ãã ãå°å ¥ãããããã®ããŒã¿ã䜿çšããŠæ¥ç¶å質ãæé©åã§ããŸãã以äžã«ããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã瀺ããŸãïŒ
1. é©å¿ãããã¬ãŒãå¶åŸ¡
説æïŒ é©å¿ãããã¬ãŒãå¶åŸ¡ïŒABRïŒã¯ãå©çšå¯èœãªåž¯åå¹ ã«åºã¥ããŠæ åã®ãããã¬ãŒãã調æŽããæè¡ã§ããããã«ããããããã¯ãŒã¯ç¶æ³ãå€åããŠãã¹ã ãŒãºãªæ åã¹ããªãŒã ãç¶æããããšãã§ããŸãã
å®è£
ïŒ ABRããµããŒãããWebRTCã©ã€ãã©ãªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŸããavailableOutgoingBitrateããã³availableIncomingBitrateã®çµ±èšãç£èŠããããã«å¿ããŠæ åãããã¬ãŒãã調æŽããŸãã
2. åæ¹èª€ãèšæ£ (FEC)
説æïŒ åæ¹èª€ãèšæ£ïŒFECïŒã¯ãéä¿¡ã¹ããªãŒã ã«åé·ããŒã¿ã远å ããæè¡ã§ããããã«ãããåä¿¡åŽã¯åéãèŠæ±ããããšãªããã±ãããã¹ããå埩ã§ããŸãã
å®è£ ïŒ WebRTCèšå®ã§FECãæå¹ã«ããŸããFECã®ãªãŒããŒããããšãã±ãããã¹å埩ã®ãã¬ãŒããªããèæ ®ããŠãã ããã
3. 茻茳å¶åŸ¡
説æïŒ 茻茳å¶åŸ¡ã¢ã«ãŽãªãºã ã¯ããããã¯ãŒã¯ããã®ãã£ãŒãããã¯ã«åºã¥ããŠéä¿¡ã¬ãŒãã調æŽããããšã§ããããã¯ãŒã¯ã®æ··éãé²ãã®ã«åœ¹ç«ã¡ãŸãã
å®è£ ïŒ WebRTCã«ã¯ãTCP-Friendly Rate Control (TFRC)ãNADAãªã©ã®çµã¿èŸŒã¿èŒ»èŒ³å¶åŸ¡ã¢ã«ãŽãªãºã ãå«ãŸããŠããŸãããããã®ã¢ã«ãŽãªãºã ãæå¹ã§ãããæ£ããèšå®ãããŠããããšã確èªããŠãã ããã
4. ãµãŒããŒéžæãšã«ãŒãã£ã³ã°
説æïŒ äžçäžã®ãŠãŒã¶ãŒã®é å»¶ãæå°éã«æããæ¥ç¶å質ãåäžãããããã«ããµãŒããŒã®å ŽæãæŠç¥çã«éžæããŸããã€ã³ããªãžã§ã³ããªã«ãŒãã£ã³ã°ã¢ã«ãŽãªãºã ã䜿çšããŠããŠãŒã¶ãŒãæãè¿ããæãä¿¡é Œæ§ã®é«ããµãŒããŒã«èªå°ããŸãã
èæ ®äºé ïŒ
- ç°ãªãå°ççãã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã®é å»¶ãæžããããã«ãè€æ°ã®ãªãŒãžã§ã³ã«ãµãŒããŒãå±éããŸãã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã䜿çšããŠéçã³ã³ãã³ãããã£ãã·ã¥ããããã©ãŒãã³ã¹ãåäžãããŸãã
- ãããã¯ãŒã¯ç¶æ³ãšãµãŒããŒã®å¯çšæ§ãèæ ®ããã«ãŒãã£ã³ã°ã¢ã«ãŽãªãºã ãå®è£ ããŸãã
5. ã³ãŒããã¯ã®æé©å
説æïŒ ã¢ããªã±ãŒã·ã§ã³ãšãããã¯ãŒã¯ç¶æ³ã«é©ããã³ãŒããã¯ãéžæããŸãã垯åå¹ èŠä»¶ãCPU䜿çšçãã©ã€ã»ã³ã¹ã³ã¹ããªã©ã®èŠå ãèæ ®ããŠãã ããã
æšå¥šäºé ïŒ
- é³å£°ã«ã¯Opusã䜿çšããŠãäœãããã¬ãŒãã§åªããå質ãæäŸããŸãã
- æ åã«ã¯VP8ãŸãã¯VP9ã䜿çšããŠã垯åå¹ æ¶è²»ãåæžããŸãã
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå©çšå¯èœã§ãã©ã€ã»ã³ã¹ã³ã¹ããåé¡ã«ãªããªãå Žåã¯ãH.264ãæ€èšããŸãã
6. ãããã¯ãŒã¯ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
説æïŒ WebRTCäœéšã«åœ±é¿ãäžããå¯èœæ§ã®ãããããã¯ãŒã¯ã®åé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããããã®ããŒã«ãšã¬ã€ãã³ã¹ããŠãŒã¶ãŒã«æäŸããŸãã
ææ¡ïŒ
- ãããã¯ãŒã¯æ¥ç¶ãšåž¯åå¹ ã確èªããŸãã
- ãã¡ã€ã¢ãŠã©ãŒã«èšå®ããã¹ãããWebRTCããŒããéããŠããããšã確èªããŸãã
- å¯èœã§ããã°ãWi-Fiã®ä»£ããã«æç·æ¥ç¶ã䜿çšãããããŠãŒã¶ãŒã«å©èšããŸãã
- ãããã¯ãŒã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã¬ã€ããFAQãæäŸããŸãã
7. ãµãŒãã¹å質 (QoS) ã®åªå é äœä»ã
説æïŒ ãµãŒãã¹å質ïŒQoSïŒã¡ã«ããºã ãå®è£ ããŠãä»ã®ãããã¯ãŒã¯ãã©ãã£ãã¯ãããWebRTCãã©ãã£ãã¯ãåªå ãããŸããããã«ãããWebRTCæ¥ç¶ãå¿ èŠãªåž¯åå¹ ãšãªãœãŒã¹ã確å®ã«åãåãããšãã§ããŸãã
å®è£ ïŒ DiffServãŸãã¯ãã®ä»ã®QoSæè¡ã䜿çšããŠãWebRTCãã±ããã«é«ãåªå 床ãããŒã¯ããŸãããããã®ããŒãã³ã°ã«åºã¥ããŠãã©ãã£ãã¯ãåªå ããããã«ãããã¯ãŒã¯ããã€ã¹ãèšå®ããŸãã
WebRTCã¢ãã¿ãªã³ã°ã®å°æ¥ã®ãã¬ã³ã
WebRTCã¢ãã¿ãªã³ã°ã®åéã¯åžžã«é²åããŠããŸããæ³šç®ãã¹ãå°æ¥ã®ãã¬ã³ããããã€ã玹ä»ããŸãïŒ
1. æ©æ¢°åŠç¿ã«ããç°åžžæ€ç¥
æ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã䜿çšããŠãWebRTCçµ±èšã®ç°åžžãèªåçã«æ€åºã§ããŸããããã«ããããŠãŒã¶ãŒã«åœ±é¿ãåã¶åã«æœåšçãªåé¡ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
2. äºæž¬åæ
äºæž¬åæã䜿çšããŠãå°æ¥ã®ãããã¯ãŒã¯ç¶æ³ãäºæž¬ããæé©ãªæ¥ç¶å質ãç¶æããããã«WebRTCèšå®ãããã¢ã¯ãã£ãã«èª¿æŽããããšãã§ããŸãã
3. 匷åãããQoEã¡ããªã¯ã¹
WebRTCã¢ããªã±ãŒã·ã§ã³ã®äž»èгçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãããè¯ã枬å®ããããã«ãããæŽç·Žãããäœæå質ïŒQoEïŒã¡ããªã¯ã¹ãéçºãããã§ãããããããã®ã¡ããªã¯ã¹ã¯ãé³å£°ãšæ åã®å質ãé å»¶ãå šäœçãªå¿çæ§ãªã©ã®èŠçŽ ãèæ ®ã«å ¥ããŸãã
4. 5Gãããã¯ãŒã¯ãšã®çµ±å
é«å質ãªãªã¢ã«ã¿ã€ã ã³ãã¥ãã±ãŒã·ã§ã³äœéšãæäŸããããã«ãWebRTCã¯ãŸããŸã5Gãããã¯ãŒã¯ãšçµã¿åãããŠäœ¿çšãããããã«ãªããŸããã¢ãã¿ãªã³ã°ããŒã«ã¯ã5Gãããã¯ãŒã¯ã®ç¹æã®ç¹æ§ã«å¯Ÿå¿ããããã«é©å¿ãããå¿ èŠããããŸãã
çµè«
WebRTCçµ±èšã®ã¢ãã¿ãªã³ã°ã¯ããªã¢ã«ã¿ã€ã ã³ãã¥ãã±ãŒã·ã§ã³ã¢ããªã±ãŒã·ã§ã³ã§é«å質ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããããã«äžå¯æ¬ ã§ããäž»èŠãªçµ±èšãçè§£ããé©åãªããŒã«ãšæè¡ã䜿çšããæé©åã®ããã®ãã¹ããã©ã¯ãã£ã¹ãå®è£ ããããšã§ãäžçäžã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ã§ä¿¡é Œæ§ã®é«ãã³ãã¥ãã±ãŒã·ã§ã³äœéšãæäŸã§ããŸããé©å¿ãããã¬ãŒãå¶åŸ¡ãããããã¯ãŒã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ã¬ã€ãã³ã¹ãŸã§ãWebRTCæ¥ç¶ãããã¢ã¯ãã£ãã«ç£èŠã»æé©åããããšã¯ããŠãŒã¶ãŒæºè¶³åºŠã®åäžããšã³ã²ãŒãžã¡ã³ãã®åäžããããŠæçµçã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®æåã«è²¢ç®ããŸãã